// pages/demo/demo_diyinput/demo_diyinput.js
import { fieldList } from './fakeData.js'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // table: 'e_ceshimokuai',
    table: 'e_ceshil',
    fieldList: [],                // 渲染表单数据
    // fieldList: fieldList,      // 
    validFlag: false,             // 验证标识
    validObj: {},                 // 验证表单项
    formObj: {},                  // 提交的数据

    rowid: '',
    dataObj: '',                  // 接口表单明细数据
    rowid: '12',
    // dataObj: {},                  // 接口表单明细数据
  },

  // 记录更改的值
  changeIpt(e) {
    let { field, val, } = e.detail,
        { field_id, } = field,
        { formObj, } = this.data
    if(formObj[field_id] !== undefined) {
      this.setData({
        [`formObj.${field_id}`]: val,
      })
    }
  },
  // 记录验证表单项
  validIpt(e) {
    let { validObj, } = this.data
    this.data.validObj = {
      ...validObj,
      ...e.detail,
    }
  },
  // 保存/保存并新增 按钮
  save(e) {
    console.log(e);
    // 开启验证
    this.data.validObj = {}
    this.setData({
      validFlag: !this.data.validFlag,
    })
    
    let { formObj, validObj, } = this.data
    wx.$validForm(formObj, validObj).then(valid => {
      if(valid) { // 表单验证通过
        console.log('表单验证通过', formObj)
        let isNew = e.currentTarget.dataset.new
        if(isNew) { // 保存并新增
          let timer = setTimeout(() => {
            let { fieldList, formObj, } = this.data
            Object.keys(formObj).forEach(key => {
              formObj[key] = ''
            })
            this.setData({
              fieldList: [],
              valid: false,
              formObj,
            })
            this.setData({
              fieldList: fieldList,
            })
            clearTimeout(timer)
          }, 1000)
        }
      } else {  // 表单验证不通过
        console.log('表单验证不通过')
        wx.$toast('必填项不能为空！')
      }
    })
  },
  

  // 接口
  getFormLayout() {
    wx.$post(1, 'Custom/get_html', { table_id: this.data.table, }).then(res => {
      if(res.errcode !== 0) return
      let { html_js, } = res.data.row[0],
          layout = JSON.parse(html_js)
      let formObj = {}
      layout.forEach(item => {
        item.field.forEach(item => {
          formObj[item.field_id] = ''
        })
      })
      this.setData({
        fieldList: JSON.parse(html_js),
        formObj,
      })
    })
  },
  getData(rowid) {
    let { table, } = this.data
    wx.$post(3, 'DynamicQuery/query_dynamic_v2', { table_id: table, row_id: rowid, }).then(res => {
      if(res.errcode !== 0) return
      let data = res.data.row[0].entity[0]
      console.log(data);
      this.setData({
        dataObj: data,
      })
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getFormLayout()
    if(this.data.rowid) this.getData(this.data.rowid)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})